'use strict';

const Controller = require('egg').Controller;

class PdfResumeController extends Controller {
  /**
   * 上传PDF简历
   * POST /api/pdf-resumes/upload
   */
  async upload() {
    const { ctx } = this;

    try {
      // 获取上传的文件
      const file = ctx.request.files[0];
      
      if (!file) {
        ctx.status = 400;
        ctx.body = {
          code: 1,
          msg: '请选择要上传的文件',
          data: null
        };
        return;
      }

      // 检查文件类型
      if (!file.filename.toLowerCase().endsWith('.pdf')) {
        ctx.status = 400;
        ctx.body = {
          code: 1,
          msg: '只支持PDF格式文件',
          data: null
        };
        return;
      }

      // 检查文件大小（10MB）
      if (file.size > 10 * 1024 * 1024) {
        ctx.status = 400;
        ctx.body = {
          code: 1,
          msg: '文件大小不能超过10MB',
          data: null
        };
        return;
      }

      // 调用服务上传文件
      const pdfResume = await ctx.service.pdfResume.uploadPdfResume(file);

      ctx.body = {
        code: 0,
        msg: '上传成功',
        data: pdfResume
      };
    } catch (error) {
      ctx.logger.error('上传PDF简历失败:', error);
      ctx.status = 500;
      ctx.body = {
        code: 1,
        msg: error.message || '上传失败',
        data: null
      };
    }
  }

  /**
   * 获取PDF简历列表
   * GET /api/pdf-resumes
   */
  async index() {
    const { ctx } = this;

    try {
<<<<<<< HEAD
      const query = ctx.query;
      const result = await ctx.service.pdfResume.getPdfResumeList(query);

      ctx.body = {
        code: 0,
        msg: '获取PDF简历列表成功',
        data: result
=======
      // 从JWT token中获取用户ID（可选，管理员可以不登录）
      const userId = ctx.user?.id;

      // 普通用户只能查看自己的PDF简历，管理员可以查看所有
      const query = { ...ctx.query };
      if (userId && ctx.user.role !== 'admin') {
        query.user_id = userId;
      }
      
      const result = await ctx.service.pdfResume.getPdfResumeList(query);

      ctx.body = {
        code: 200,
        message: '获取PDF简历列表成功',
        data: result.list || [],
        pagination: {
          current: result.page || parseInt(query.page || 1),
          pageSize: result.pageSize || parseInt(query.pageSize || 10),
          total: result.total || 0,
          pages: Math.ceil((result.total || 0) / parseInt(query.pageSize || 10))
        }
>>>>>>> resume
      };
    } catch (error) {
      ctx.logger.error('获取PDF简历列表失败:', error);
      ctx.status = 500;
      ctx.body = {
<<<<<<< HEAD
        code: 1,
        msg: error.message || '获取PDF简历列表失败',
=======
        code: 500,
        message: error.message || '获取PDF简历列表失败',
>>>>>>> resume
        data: null
      };
    }
  }

  /**
   * 获取PDF简历详情
   * GET /api/pdf-resumes/:id
   */
  async show() {
    const { ctx } = this;

    try {
      const id = ctx.params.id;
      const pdfResume = await ctx.service.pdfResume.getPdfResumeById(id);

      ctx.body = {
        code: 0,
        msg: '获取PDF简历详情成功',
        data: pdfResume
      };
    } catch (error) {
      ctx.logger.error('获取PDF简历详情失败:', error);
      ctx.status = error.status || 500;
      ctx.body = {
        code: 1,
        msg: error.message || '获取PDF简历详情失败',
        data: null
      };
    }
  }

  /**
   * 删除PDF简历
   * DELETE /api/pdf-resumes/:id
   */
  async destroy() {
    const { ctx } = this;

    try {
      const id = ctx.params.id;
      await ctx.service.pdfResume.deletePdfResume(id);

      ctx.body = {
<<<<<<< HEAD
        code: 0,
        msg: '删除成功',
=======
        code: 200,
        message: '删除成功',
>>>>>>> resume
        data: null
      };
    } catch (error) {
      ctx.logger.error('删除PDF简历失败:', error);
      ctx.status = error.status || 500;
      ctx.body = {
<<<<<<< HEAD
        code: 1,
        msg: error.message || '删除失败',
=======
        code: 500,
        message: error.message || '删除失败',
>>>>>>> resume
        data: null
      };
    }
  }
}

module.exports = PdfResumeController;

